<?php
/**
 * Regroupement des fonctionnalités de la recherche 

 * [Mathieu FOURNIAL - Romain MIOR]
 */

/* -- Fait par [Mathieu FOURNIAL - Romain MIOR]
 * --- Renvoi la requete SQL ---
 * Prend en paramètre :
 * @$critere : Critère de la requete SQL
 * @$condition : Condition supplémentaire par défaut null
 *
 * Renvoi la requete SQL
 */
function getRequeteCritere($critere, $condition = null)
{
    if($critere == "vente")
    {
        $req = "SELECT LIVRE.ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, 
                    DATE_FORMAT(DATEPARUTION, '%d/%m/%Y') AS DATEPARUTION, MOTSCLES, RESUME,
                    THEME, PRIX, QTESTOCK, PAYS, SUM(QTE) AS SOMME
                FROM COMMANDE, COMMANDER, LIVRE 
                WHERE COMMANDER.ISBN = LIVRE.ISBN
                AND COMMANDER.NUMCMD = COMMANDE.NUMCMD
                GROUP BY LIVRE.ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, DATEPARUTION, MOTSCLES, RESUME, THEME, PRIX, QTESTOCK, PAYS
                ORDER BY SOMME DESC";
    }
    else if($critere == "accueil_top_vente")
    {
        $req = "SELECT LIVRE.ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, 
                    DATE_FORMAT(DATEPARUTION, '%d/%m/%Y') AS DATEPARUTION, MOTSCLES, RESUME,
                    THEME, PRIX, QTESTOCK, PAYS, SUM(QTE) AS SOMME
                FROM COMMANDE, COMMANDER, LIVRE 
                WHERE COMMANDER.ISBN = LIVRE.ISBN
                AND COMMANDER.NUMCMD = COMMANDE.NUMCMD
                GROUP BY LIVRE.ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, DATEPARUTION, MOTSCLES, RESUME, THEME, PRIX, QTESTOCK, PAYS
                ORDER BY SOMME DESC
                LIMIT 0,3";
    }
    else if($critere == "new" || $critere == "accueil_nouveautes")
    {
        $req = "SELECT LIVRE.ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, 
                    DATE_FORMAT(DATEPARUTION, '%d/%m/%Y') AS DATEPARUTION, MOTSCLES, RESUME,
                    THEME, PRIX, QTESTOCK, PAYS 
                FROM LIVRE 
                ORDER BY DATE_FORMAT(DATEPARUTION, '%Y/%m/%d') DESC";
    }
    else if($critere == "promo" or $critere == "accueil_promotion")
    {
        $req = "SELECT LIVRE.ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, 
                    DATE_FORMAT(DATEPARUTION, '%d/%m/%Y') AS DATEPARUTION, MOTSCLES, RESUME,
                    THEME, PRIX, QTESTOCK, PAYS, ROUND((PRIX*REDUCTION), 2) AS PROMO
                FROM LIVRE, PROMOTION
                WHERE LIVRE.ISBN = PROMOTION.ISBN
                AND DATE_ADD(DATEDEBUT, INTERVAL DUREE DAY) >= CURDATE()
                ORDER BY REDUCTION DESC";
    }
    else if($critere == "panier")
    {
        $element_panier = getProduitPanier();
        // Condition toujours fausse
        $condition_sql = 'where 0=1';
        foreach($element_panier as $key => $value)
        {
            $isbn = $value;
            // Si n'est pas vide
            if(!empty($condition_sql))
            {
                $condition_sql .= ' or ';
            }

            $condition_sql .= '(ISBN = "'.$isbn.'")';
        }
        $req = 'SELECT ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, 
                    DATE_FORMAT(DATEPARUTION, "%d/%m/%Y") AS DATEPARUTION, MOTSCLES, RESUME,
                    THEME, PRIX, QTESTOCK, PAYS 
                FROM LIVRE '.$condition_sql;
    }
    else if($critere == "tous")
    {
        $req = "SELECT ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, 
                    DATE_FORMAT(DATEPARUTION, '%d/%m/%Y') AS DATEPARUTION, MOTSCLES, RESUME,
                    THEME, PRIX, QTESTOCK, PAYS 
                FROM LIVRE
                ORDER BY TITRE, AUTEUR, ISBN";
    }
    else if($critere == "recherche" or $critere == "recherche-critere")
    {
        $req = "SELECT ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, 
                    DATE_FORMAT(DATEPARUTION, '%d/%m/%Y') AS DATEPARUTION, MOTSCLES, RESUME,
                    THEME, PRIX, QTESTOCK, PAYS 
                FROM LIVRE
                WHERE $condition";
    }
    else if($critere == "client")
    {
        $req = "SELECT * 
                FROM CLIENT
                WHERE $condition";
    }
    else if($critere == "historique")
    {
        $req = "SELECT NUMCMD, DATE_FORMAT(DATECMD, '%d/%m/%Y') AS DATECMD, ETAT
                FROM COMMANDE
                WHERE $condition
                ORDER BY NUMCMD, DATECMD, ETAT";
    }
    else if($critere == "historique-produit")
    {
        $req = "SELECT L.ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, 
                    DATE_FORMAT(DATEPARUTION, '%d/%m/%Y') AS DATEPARUTION, MOTSCLES, RESUME,
                    THEME, PRIX, QTESTOCK, PAYS, LC.QTE
                FROM LIVRE L, COMMANDER LC
                WHERE L.ISBN = LC.ISBN
                AND ($condition)
                ORDER BY L.ISBN";
    }
    else
    {
        $req = "SELECT ISBN, TITRE, AUTEUR, EDITEUR, IMAGE, 
                    DATE_FORMAT(DATEPARUTION, '%d/%m/%Y') AS DATEPARUTION, MOTSCLES, RESUME,
                    THEME, PRIX, QTESTOCK, PAYS 
                FROM LIVRE
                WHERE ISBN = '$critere'";
    }
    
    return $req;
}

/* -- Fait par [Romain MIOR]
 * --- Renvoi le message d'erreur ---
 * Prend en paramètre :
 * @$critere : Critère du message d'erreur
 *
 * Renvoi le message d'erreur au format texte
 */
function getErreurMsg($critere)
{
    if($critere == "vente")
    {
        $message_erreur = "Aucun livre n'a été vendu !";
    }
    else if($critere == "new")
    {
        $message_erreur = "Aucune livre est en promotion !";
    }
    else if($critere == "promo")
    {
        $message_erreur = "Aucun livre est en promotion !";
    }
    else if($critere == "tous")
    {
        $message_erreur = "Aucun livre n'est présent dans la librairie !";
    }
    else if($critere == "recherche")
    {
        $message_erreur = "Aucun livre ne correspond à votre recherche !";
    }
    else if($critere == "client")
    {
        $message_erreur = "Aucun client trouvé dans la base !";
    }
    else
    {
        $message_erreur = "";
    }
    
    return utf8_decode($message_erreur);
}

/* -- Fait par [Romain MIOR]
 * --- Renvoi la liste des produit en fonction du critère de recherche ---
 * Prend en paramètre :
 * @$champ : Le champ de recherche
 *
 * Renvoi la liste des lignes retournée par la requete SQL
 */
function getListeDepuisChamps($champ)
{
    $req = "SELECT $champ
            FROM LIVRE
            GROUP BY $champ
            ORDER BY $champ";
    
    // Initialise la liste
    $liste = array();
    $mdb2 = connexion();
    
    // Initialise le message d'erreur
    $message_erreur = '';
    
    if(MDB2::isError($mdb2))
    {
        $message_erreur = "Erreur lors de la connexion à la base de données ! <br />";
        $message_erreur .= $mdb2->getDebugInfo() ."<br />";
        $message_erreur .= $mdb2->getMessage() ."<br />";
    }
    else
    {
        $res = $mdb2->query($req);
        
        if(MDB2::isError($res))
        {
            $message_erreur = "Erreur lors sélection dans la base LIVRE ! <br />";
            $message_erreur .= $res->getDebugInfo() ."<br />";
            $message_erreur .= $res->getMessage() ."<br />";
        }
        else
        {
            // Si le nombre de ligne > 0
            if($res->numRows() > 0)
            {
                $i=0;
                while (($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)))
                {

                    // Tableau associatif des criteres de recherche (minuscule importante !)
                    $liste[$i] = $row[strtolower($champ)];
                    $i++;
                }
            }
            else
            {
                // Obtient le message d'erreur
                $message_erreur = "Erreur lors de la recherche par critère";
            }
        }
        
        // Disconnect
        $mdb2->disconnect();
    }
    
    // Erreur
    $GLOBALS['smarty']->append('erreur', utf8_encode($message_erreur));
    
    return $liste;
}

?>
